package com.admin.system.service;

import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNode;
import com.admin.model.base.PageResult;
import com.admin.model.dto.DeptDto;
import com.admin.model.dto.UserDto;
import com.admin.model.pojo.Dept;
import com.admin.model.vo.DeptTreeVo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Set;

/**
 * (Dept)表服务接口
 *
 * @author makejava
 * @since 2021-01-31 20:16:25
 */
public interface DeptService extends IService<Dept> {
    /**
     * 条件查询
     *
     * @param deptDto
     * @return
     */
    PageResult queryAll(DeptDto deptDto, int pageNum, int pageSize, String sort);

    /**
     * id查询
     * @param id
     * @return
     */
    DeptDto findById(Long id);

    /**
     * 部门id查询用户
     * @param deptId
     * @return
     */
    List<UserDto> findUserByDeptId(Long deptId);

    /**
     * 构建部门树
     * @return
     */
    List<Tree<String>> buildTree();

    /**
     * 构建部门员工树
     * @return
     */
    List<Tree<String>> buildDuTree();

    /**
     * pid查询
     * @param pid
     * @return
     */
    List<DeptDto> queryByPid(Long pid);

    /**
     * 创建部门
     * @param deptDto
     * @return
     */
    Dept create(DeptDto deptDto);

    /**
     * id删除部门
     * @param ids
     * @return
     */
    void deleteByIds(Set<Long> ids);

    /**
     * 更新部门
     * @param deptDto
     * @return
     */
    Dept updateById(DeptDto deptDto);

}